//同以目录下的文件更名：
const fs = require("fs");
const path = require("path");
const os = require("os");
const { addAbortSignal } = require("stream");
const { start } = require("repl");
// 包含当前文件夹所有内容的数组
let allFiles = fs.readdirSync(__dirname);
// 更名操作
function my_rename(oldName, newName) {
    fs.rename(oldName, newName, function (err) {
        if (err) {
            throw err;
        }

        // console.log("rename is done!");
    });
}
// 验证结尾后缀是否为真。str文件的名字。appoint文件后缀的名字
function my_validationEnd(str, appoint) {
    // 不区分大小写全部转换成小写。
    str = str.toLowerCase();
    let tempArr = str.split(".");
    let endStr = tempArr[tempArr.length - 1];
    if (appoint === endStr) {
        return true;
    }
    return false;
}
// 过滤数组的方法，返回我想要的文件类型的数组。第一个参数文件数组。第二个参数后缀名，字符串。
function type_arr(arr, typeStr) {
    let newArr = [];
    for (let i in arr) {
        if (my_validationEnd(arr[i], typeStr)) {
            newArr.push(arr[i]);
        }
    }
    return newArr;
}

// 把a00b.txt更名为a-b.txt
function my_rename_to_h265(fileType, suffix) {
    // 所有该格式文件的数组 只剩下mkv视频的文件数组
    let typeArray = type_arr(allFiles, fileType);
    typeArray.forEach((element) => {
        if (element.toLowerCase().indexOf('h265') !== -1) {
            return;
        }
        // aaa.bbb.ccc.mkv
        let lastPointIndex = element.lastIndexOf('.')
        let startStr = element.slice(0, lastPointIndex)
        // 包含.
        let endStr = element.slice(lastPointIndex)
        // console.log(startStr,endStr);
        // let tempStrArr = element.split('.')
        // my_rename(element, element + ' ' + suffix + '.' + tempStrArr[tempStrArr.length - 1])
        my_rename(element, startStr + ' ' + suffix + endStr)

    });
    console.log("已经重命名成" + suffix + "!");
}

// 判断是否文件夹
function my_isFold(fileOrFoldName) {
    return fs.lstatSync(fileOrFoldName).isDirectory()
}

// 获取文件的大小名字类型信息
/* 1>访问时间（access time 简写为atime）
2>修改时间（modify time 简写为mtime）
3>状态修改时间(change time 简写为ctime) */
function get_fileMsg(file) {
    let msg = fs.statSync(file)
    let index = file.lastIndexOf('.')
    let suffix = file.slice(index + 1)
    let temp=msg.size / 1024 / 1024 + 'mb'
    let index2=temp.indexOf('.')
    temp=temp.slice(0,index2+3)+'mb'
    // console.log('get', msg);
    return {
        name: file,
        size: temp,
        type: suffix,
        /* modifyTime: msg.mtime,
        birthTime:msg.birthtime */
    }
}

// 打印这个类型的数组
function my_console_arr(fileType) {
    let typeArray = type_arr(allFiles, fileType);
    return typeArray
}

// 把我要的JS格式的文件全部追加复制到一个新的文件里面。目录，格式，新文件名字
function my_appendFile(newFile, msg) {
    fs.appendFileSync(newFile, msg + os.EOL);
    console.log("已经将所有该格式所有文件内容复制到一个文件中！");
}
function my_writeFile(newFile, msg) {
    fs.writeFileSync(newFile, msg + os.EOL);
    console.log("已经将所有该格式所有文件内容复制到一个文件中！");
}

// 把该文件夹所有文件信息存放到一个txt文件里面
function myCreateAllFilesMsg(msgFile) {
    let msgObjArr = []
    // 所有文件数组
    let allFiles2 = []
    allFiles.forEach(item => {
        if (!my_isFold(item)&&item!==msgFile) {
            allFiles2.push(item)
        }
    })
    allFiles2.forEach(item => {
        msgObjArr.push(get_fileMsg(item))
    })
    my_writeFile(msgFile, JSON.stringify(msgObjArr));
    // console.log('msg', msgObjArr);
    console.log('所有文件信息已经保存！');
}
// console.log(my_console_arr('txt'));
// console.log(allFiles, 'all');
// console.log('文件信息', get_fileMsg('script_ouMeiFilefold文件夹的名字赋给mp4加上xxx12.13.14改名为12.13.14xxx.js'));
myCreateAllFilesMsg('allFiles.txt')
// get_fileMsg('19.4.2马牛逼直播聊天.mp4')

